Set x {
    x.shape = CircleTransform {
        strokeWidth = 0
    }

    x.text = TextTransform {
      scaleX = 1.0
      scaleY = 1.0
      string = x.label
    }

    x.labelFn = encourage containsPoly(x.shape, x.text)
    -- x.minSizeFn = ensure minSize(x.shape)
    -- x.maxSizeFn = ensure maxSize(x.shape)
    -- x.labelPosFn = encourage sameCenter(x.text, x.shape)
    LOCAL.layering  = x.shape below x.text
}

Set x; Set y
where IsSubset(x, y) {
    LOCAL.alignFn = encourage alignAlong(x.shape, y.shape, -30.0)
    LOCAL.orderFn = encourage orderAlong(x.shape, y.shape, 90.0)
    LOCAL.sizeFn = encourage smaller(x.shape, y.shape)
    -- LOCAL.sizeFn    = ensure smallerThan(x.shape, y.shape)
    -- LOCAL.outsideFn = ensure outsideOf(y.text, x.shape)
    LOCAL.layering  = x.shape above y.shape
    LOCAL.layering1  = y.text below x.shape
}

/*
Set x; Set y
where NotIntersecting(x, y) {
    LOCAL.notIntersectFn = ensure disjoint(x.shape, y.shape)
}

Set x; Set y
where Intersect(x, y) {
    LOCAL.overlapFn = ensure overlapping(x.shape, y.shape)
    LOCAL.labelFn1  = ensure outsideOf(y.text, x.shape)
    LOCAL.labelFn2  = ensure outsideOf(x.text, y.shape)
}

Point p {
      p.offset = 10.0
      p.shape = Circle {
      	      strokeWidth = 0
	      color = rgba(0.0, 0.0, 0.0, 1.0)
	      r = 3.0
      }

      p.text = Text {
	string = p.label
	x = p.shape.x + p.offset
	y = p.shape.y + p.offset
      }
}
*/
